perm filename FUSUB.F4[FUN,LCS]1 blob
sn#166827 filedate 1975-06-27 generic text, type T, neo UTF8
00100 SUBROUTINE ZFUNC
00200 COMMON/RD/ A(50,4),B(2,10),FN(10),XA(10),AA(4,178,10)
00300 1,LX,JX,JT,IDEL,FNUM,FNUM1,Z,FLNM,FLNM1,KT
00400 COMMON FUNC(512),F2(512),K,I
00500
00600 43 TYPE 1
00700 ACCEPT 100,MA,C
00720 IF(MA.NE.'B')GO TO 76
00740 430 KT=512
00760 C FOR BACKUP
00780 RETURN
00900 76 IF(MA.EQ.'A')GO TO 75
00925 IF(MA.NE.'M')GO TO 73
00950 75 TYPE 39,B
01000 TYPE 2
01100 ACCEPT 3,FNM2
01150 IF(FNM2.EQ.'B')GO TO 43
03000 40 DO 4 K=1,10
03100 5 IF(FNM2.NE.FN(K))GO TO 4
03200 N2=K
03300 GO TO 72
03400 4 CONTINUE
03500 TYPE 74
03600 GO TO 75
03700 74 FORMAT(' FUNCTION NOT FOUND '/)
03800 72 CALL DPYF(N2,F2)
03910 7 TYPE 60
03940 ACCEPT 100,K
03970 IF(K.EQ.'B')GO TO 15
03975 IF(K.EQ.'N')GO TO 15
03980 IF(MA.EQ.'M')GO TO 102
04000 70 TYPE 10
04100 ACCEPT 11,R,R2
04150 REREAD 100,K
04175 IF(K.EQ.'B')GO TO 75
04200 IF(R2.EQ.0)R2=1
04300 IF(R.EQ.0)R=1
04400 DO 13 K=1,512
04450 X=FUNC(K)
04500 FUNC(K)=FUNC(K)*R+F2(K)*R2+C
04550 13 F2(K)=X
04600 GO TO 104
04700 73 IF(MA.NE.'C')GO TO 44
04716 DO 45 K=1,512
04732 F2(K)=FUNC(K)
04748 45 FUNC(K)=FUNC(K)+C
04764 GO TO 104
04780 44 IF(MA.NE.'I')GO TO 46
04796 DO 47 K=1,512
04812 F2(K)=FUNC(K)
04828 47 FUNC(K)=C-FUNC(K)
04844 GO TO 104
04860 46 IF(MA.NE.'R')GO TO 75
04876 48 DO 50 K=1,512
04892 50 F2(K)=FUNC(513-K)
04908 DO 51 K=1,512
04924 X=FUNC(K)
04940 FUNC(K)=F2(K)+C
04956 51 F2(K)=X
04972 GO TO 104
05000 102 DO 103 K=1,512
05050 X=FUNC(K)
05100 FUNC(K)=FUNC(K)*F2(K)+C
05150 103 F2(K)=X
05200 104 A(1,2)=520
05300 CALL NORM(FUNC)
05400 C NORMALIZES THE FUNCTION
05500 CALL DPY(FUNC,1)
05600 TYPE 6
05700 ACCEPT 100,K
05800 IF(K.EQ.'M')GO TO 43
05900 IF(K.NE.'B')RETURN
05910 DO 14 K=1,512
05920 14 FUNC(K)=F2(K)
05940 15 CALL DPY(FUNC,1)
05950 GO TO 43
06000 1 FORMAT
06050 1(' A(DD), M(ULT), R(ETRO), I(NVRT), OR C,N (=ADD CONSTANT N) ',$)
06100 100 FORMAT(A1,F)
06200 2 FORMAT(' 2ND FUNC? ',$)
06300 3 FORMAT(A3)
06400 10 FORMAT(' TYPE RATIO (E.G. 1,2) ',$)
06410 39 FORMAT(10(A1,A3))
06500 11 FORMAT(2F)
06600 6 FORMAT(' F(INISH), OR M(ORE)? ',$)
06650 60 FORMAT(' GO ON? ',$)
06700 END
06800
06900 SUBROUTINE DPYF(N,F)
07000 COMMON/S/H,AMP,CON,PH /GRD/ON
07100 COMMON/RD/ A(50,4),B(2,10),FN(10),XA(10),AA(4,178,10)
07200 1,LX,JX,JT,IDEL,FNUM,FNUM1,Z,FLNM,FLNM1,KT
07300 DIMENSION F(1)
07305 NODPY=-1
07310 IF(N.GT.0)GO TO 8
07320 N=JX
07330 NODPY=0
07400 CC COLGATE 6/74--SEE MAIN AT 1201-18 IF(XA(N).EQ.'SEG')GO TO 5
07410 8 IF(XA(N).NE.'SYNTH')GO TO 5
07500 CALL ZERO(F)
07600 K=1
07700 1 AMP=AA(2,K,N)
07800 H=AA(1,K,N)
07900 PH=AA(3,K,N)
08000 CON=AA(4,K,N)
08100 CALL SYN(F)
08200 K=K+1
08300 IF(AA(1,K,N).NE.999)GO TO 1
08400 CALL NORM(F)
08500 GO TO 4
08800
08900 5 K=1
08920 G=AA(2,1,N)
09000 IF(G.EQ.520)GO TO 6
09010 J=1
09020 IF(G.LE.1)GO TO 22
09030 Y=0
09040 K=0
09045 C FOR START BEYOND STEP 1 - ASSUMES A 0,1.
09050 GO TO 2
09100 22 Y=AA(1,1,N)
09300 2 K=K+1
09400 M=AA(2,K,N)*5.12+.5
09500 IF(M.GT.512)GO TO 6
09600 G=AA(1,K,N)
09700 Z=G-Y
09800 H=M-J+1
09850 IF(H.LT.1)H=1
09900 NN=0
10000 DO 3 L=J,M
10100 F(L)=(NN*Z)/H+Y
10200 3 NN=NN+1
10300 IF(M.EQ.512)GO TO 4
10400 Y=G
10500 J=M+1
10600 GO TO 2
10700 C FOR LONG FUNCS.
10800 6 L=K+1
10900 DO 7 M=1,512
11000 7 F(M)=AA(M,L,N)
11100 4 IF(NODPY)CALL DPY(F,-1)
11110 C NODPY=0 IS FOR PLOTTER AND LPT
11200 C NOW FUNCTION IS FULL AND DISPLAYED
11400 END
11500
11600 SUBROUTINE SYN(F)
11700 COMMON/S/H,AMP,CON,PH
11800 DIMENSION F(1)
11900 DATA FAC/0.703125/,FACP/1.422222/
12000 X=PH*FACP+1.0
12100 C PHASE IS IN DEGREES (0 - 360)
12200 2016 DO 17 L=1,512
12300 XL=SIND(X*FAC)*AMP+CON
12400 IF(CON.LT.100.0)GO TO 1
12500 F(L)=(XL-100.)*F(L)
12600 GO TO 2
12700 1 F(L)=F(L)+XL
12800 C NORMALIZES THE FUNCTION
12900 2 X=X+H
13000 17 IF(X.GT.512.)X=X-512.
13200 END
13300
13400 SUBROUTINE ZERO(F)
13500 DIMENSION F(1)
13600 DO 1 K=1,512
13700 1 F(K)=0
13800 RETURN
13900 END
14000
14100 SUBROUTINE NORM(F)
14200 DIMENSION F(1)
14300 X=F(1)
14400 C NORMALIZES THE FUNCTION
14500 DO 19 K=2,512
14600 XK=ABS(F(K))
14700 19 IF(X.LT.XK)X=XK
14800 DO 20 K=1,512
14900 20 F(K)=F(K)/X
15000 RETURN
15100 END